// 切断原型链
// 通过重写原型为实例实现原型链
// 引用值类型共享
// 定义方法需要写在替换原型的语句之后

// 实现原型链有一种基本模式，代码如下
function SuperType() {
  this.property = true;
  // 引用值类型会被所有实例共享
  this.colors = ['red', 'blue', 'green'];
}

// 定义在超类上的getSuperValue方法
SuperType.prototype.getSuperValue = function() {
  return this.property;
}

// 定义子类
function SubType() {
  this.subproperty = false;
}



// 子类继承超类 通过创建superType的实例，并将实例赋值给prototype实现的
SubType.prototype = new SuperType();

// 定义getSubValue方法
SubType.prototype.getSubValue = function () {
  return this.subproperty;
}

// 切断原型链
SubType.prototype = {

}
SubType.prototype = new SuperType();

var instance = new SubType();
console.log('instance.getSuperValue():', instance.getSuperValue()); // err

var instance1 = new SubType();
instance1.colors.push('black');
console.log(instance1.colors);
var instance2 = new SubType();
console.log(instance2.colors);
